package com.itheima.health.dao;

import com.itheima.health.pojo.Role;
import com.github.pagehelper.Page;
import com.itheima.health.pojo.Role;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * @项目: health_parent
 * @包名: com.itheima.health.dao
 * @
 * @作者: long rui nan
 * @日期: 2021-01-17 20:45
 */
public interface RoleDao {
    /**
     * 角色分页查询
     * @param queryString
     * @return
     */
    Page<Role> findByCondition(String queryString);

    /**
     * 添加角色
     * @param role
     */
    void add(Role role);

    /**
     *添加添加角色与权限的关系表
     * @param roleId
     * @param permissionId
     */
    void addRolePermission(@Param("roleId") Integer roleId,@Param("permissionId") Integer permissionId);

    /**
     *根据名字查询
     * @param name
     * @return
     */
    int findByName(String name);

    /**
     * 根据id查询角色是否使用
     * @param id
     * @return
     */
    int findCountByRoleId(int id);

    /**
     * 根据id删除角色与权限的关联
     * @param id
     */
    void deleteRolePermission(int id);

    /**
     * 删除角色与菜单的关系
     * @param id
     */
    void deleteRoleMenu(int id);

    /**
     * 根据id删除角色
     * @param id
     */
    void deleteById(int id);

    /**
     * 根据id查询角色信息
     * @param id
     * @return
     */
    Role findById(int id);
    /**
     * 根据角色id查询角色与权限的关联id数组
     * @param id
     * @return
     */
    List<Integer> findPermissionsByRoleId(int id);
    /**
     * 修改角色
     * @param role

     * @return
     */
    void update(Role role);

    /**
     * 添加角色与菜单的关系
     * @param roleId
     * @param menuId
     */
    void addRoleMenu(@Param("roleId") Integer roleId, @Param("menuId")Integer menuId);
    /**
     * 根据角色id查询角色与菜单的关联id数组
     * @param id
     * @return
     */
    List<Integer> findMenuByRoleId(int id);

    /**
     * 查询主菜单下子菜单的id集合
     * @param menuId
     * @return
     */
    List<Integer> findBySonMenus(Integer menuId);

    /**
     * 添加角色与子菜单的关联
     * @param roleId
     * @param integerId
     */
    void addBySonMenus(@Param("roleId") Integer roleId, @Param("integerId") Integer integerId);
}